#include "est.h"

bool control_entrada(int *opcion1){
    
    int opcion;
    printf("-------------------\n");
    printf("Iniciar sesion. (1)\nSalir. (0) \n");
    printf("-------------------\n");
    scanf("%i", &opcion);
    
    switch(opcion){
        //se quiere iniciar sesion
        case 1:{
            //se abre el archivo de las cuentas en modo lectura
            FILE * cuentas = NULL;
            cuentas = fopen("cuentas", "rb");
            //si no existe el archivo de cuentas...
            if(cuentas == NULL){
                //se crea el archivo de cuentas y se crea la cuenta de administrador
                cuentas = fopen("cuentas", "wb+");
                tCuenta admin = {0,"0",1};
                fwrite(&admin, sizeof(tCuenta), 1, cuentas);
                fclose(cuentas);
                printf("Se a creado el archivo de cuentas porfavor ingrese con la cuenta de administrador\n");
                return 1;

            }
            else{
                //si existe...
                tCuenta lectura, validacion;
                lectura.nUsuario = 999999999;
                memset(validacion.pass,0, sizeof(validacion.pass));
                //se pide el nº de usuario y contraseña
                printf("Escriba el nº de usuario: ");
                scanf("%i", &validacion.nUsuario);
                printf("Esciba su contraseña: ");
                scanf("%s",validacion.pass);
                //mientras se lea el archivo y el nº de usuario ingresado sea distinto al leido
                while(fread(&lectura, sizeof(tCuenta), 1, cuentas) && lectura.nUsuario != validacion.nUsuario);
                
                //si el nº de usuario en el archivo es igual al ingresado
                //y también si las pass son iguales se retorna cero
                if (validacion.nUsuario == lectura.nUsuario && 0 == strcmp(lectura.pass, validacion.pass)){
                    if(lectura.tipo == 1)
                        *opcion1 = 1;
                    else
                        *opcion1 = 2;
                    fclose(cuentas);
                    return 0;
                }
                else{
                    //sino se retorna 1 para que se vuelva a entrar al loop de inicio de sesion
                    fclose(cuentas);
                    printf("El numero o nombre de usuario son invalidos.\n");
                    return 1;
                }
            }
        }
        default:{
            *opcion1 = 0;
            return 0;
        }
    }
}



void ingresar_alumno(){
    
    tAlumno nuevo;
    memset(nuevo.nombre, 0, sizeof(nuevo.nombre));
    memset(nuevo.rol_alumno, 0, sizeof(nuevo.rol_alumno));
    //se piden los datos del alumno
    while(getchar()!='\n');
    printf("Ingrese el nombre del alumno: ");
    fgets(nuevo.nombre,30, stdin);
    
    printf("Ingrese el rol del alumno(sin guion antes del digito verificador): ");
    scanf("%s[^\n]", nuevo.rol_alumno);
    
    printf("Ingrese el sexo del alumno: ");
    while(getchar()!='\n');
    scanf("%s[^\n]", nuevo.sexo);
    
    printf("Ingrese la edad del alumno: ");
    scanf("%i[^\n]", &nuevo.edad);
    while(getchar()!='\n');
    
    //se abre el archivo de alumnos en modo lectura
    FILE * alumno = NULL;
    alumno = fopen("alumno", "rb");
    //si no se puede abrir
    if (alumno == NULL) {
        //se inicia en modo escritura para que cree el archivo si no existe
        alumno = fopen("alumno", "wb+");
        //si de todas formas no se abre se anuncia que no se pudo abrir
        if(alumno == NULL){
            printf("NO SE PUDO ABRIR EL ARCHIVO\n");
            return;
        }
        else{
            //se escribe el primer dato de alumno y un dato base
            tAlumno primero = {"A",0,"A",0,"F"};
            nuevo.id_ficha = 1;
            fwrite(&primero, sizeof(tAlumno), 1, alumno);
            fclose(alumno);
            alumno = fopen("alumno", "ab+");
            fwrite(&nuevo, sizeof(tAlumno), 1, alumno);
            fclose(alumno);
    
        }
    }
    //si el archivo se pudo abrir...
    else {
        tAlumno lectura;
        FILE * tmp = NULL;
        while(fread(&lectura, sizeof(tAlumno), 1, alumno)){
            tmp = fopen("tmp", "ab");
            if(atoi(lectura.rol_alumno) < atoi(nuevo.rol_alumno))
                fwrite(&lectura, sizeof(tAlumno), 1, tmp);
            else if(atoi(lectura.rol_alumno) == atoi(nuevo.rol_alumno)){
                printf("El alumno ya existe");
                
                break;
            }
            else{
                fwrite(&nuevo, sizeof(tAlumno), 1, tmp);
                while()
                    fwrite(&lectura, sizeof(tAlumno), 1, tmp);
            }
        }
    }
}

void imprimir_alumnos(){
    FILE * alumnos;
    alumnos = fopen("alumno", "rb+");
    if(alumnos == NULL){
        printf("NO SE PUDO ABRIR EL ARCHIVO\n");
        return;
    }
    else{
        tAlumno lectura;
        while(fread(&lectura, sizeof(tAlumno), 1, alumnos)){
            if(lectura.id_ficha != 0){
                printf("%s | %s | %s | %i \n", lectura.nombre, lectura.rol_alumno, lectura.sexo, lectura.id_ficha);
            }
        }
    }
}

void borrar_alumno(){
    
    char rol[10];
    printf("Ingrese el Rol del alumno que desea eliminar: ");
    scanf("%s",rol);
    
}
